package com.itheima.service.impl;

import com.itheima.dao.AccountDao;
import com.itheima.domain.Account;
import com.itheima.service.AccountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author 92609
 * TODO：问题：service层需要dao层对象，但是dao层对象没有再ioc容器中，
 *          需要将dao层涉及到的对象放到ioc容器中，然后再去ioc容器中获取
 *
 *     1.项目：spring+mybatis（ioc改造）
 *          i)mybatis使用过程中涉及到的对象
 *              SqlSessionFactoryBuilder --> SqlSessionFactory --> SqlSession --> AccountDao（最重要）
 *          ii）IOC改造
 *              i）将这些对象放到IOC容器中
 *                  1）方案一：在这些类上加上@Component之类的  （用不了，前三个是第三方类，最后一个是动态代理）
 *                  2）方案二：工厂方式
 *              ii）需要的时候，从IOC容器中获取
 *     2、项目：spring整合mybatis
 *       1）.问题：我们对mybatis对象进行ioc改造，但是依然冗余，而且mybatis还有xml配置
 *       2）.mybatis做了一件事：按照spring的规范，封装了自己
 *           mybatis设计到的对象进行简化，去掉xml配置文件
 *       3）.Spring整合mybatis
 *           a.导包 spring-jdbc和mybatis-spring
 *           b.代码编写
 *              SpringConfig + MyBatisConfig
 */
@Service
public class AccountServiceImpl2 implements AccountService {

    @Autowired
    AccountDao accountDao;

    @Override
    public void save(Account account) {
        accountDao.save(account);
    }

    @Override
    public void update(Account account){
        accountDao.update(account);
    }

    @Override
    public void delete(Integer id) {
        accountDao.delete(id);
    }

    @Override
    public Account findById(Integer id) {
        Account account = accountDao.findById(id);
        return account;
    }

    @Override
    public List<Account> findAll() {
        List<Account> list = accountDao.findAll();
        return list;
    }
}
